package jukebox.model.playlist;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

@Service
public class PlayListServiceImpl implements PlayListService {
	@Resource(name="playListDAOImpl")
	private PlayListDAO playListDAO;
	@Resource(name="musicListDAOImpl")
	private MusicListDAO musicListDAO;
	
	/**
	 * @method : getPlayList
	 * @author : 김준섭
	 * @since : 2014-07-01
	 * @param : String memberId - 회원 아이디
	 * @return : List - 플레이리스트 정보
	 * @comment : 아이디로 조회하여 플레이리스트를 가져온다.
	 */
	@Override
	public List getPlayList(String memberId) {
		return playListDAO.getPlayList(memberId);
	}

	/**
	 * @method : addPlayList
	 * @author : 김준섭
	 * @since : 2014-07-01
	 * @param : String playListName - 플레이리스트 이름, String memberId - 회원 아이디
	 * @return : void
	 * @comment : 플레이리스트를 등록한다.
	 */
	@Override
	public void addPlayList(String playListName, String memberId) {
		Map<String, String> map = new HashMap<String, String>();
		map.put("playlist_name", playListName);
		map.put("member_id", memberId);
		System.out.println(map);
		playListDAO.addPlayList(map);
	}

	/**
	 * @method : removePlayList
	 * @author : 김준섭
	 * @since : 2014-07-01
	 * @param : int playListNo - 플레이리스트 번호
	 * @return : void
	 * @comment : 플레이리스트를 삭제한다.
	 */
	@Override
	public void removePlayList(int playListNo) {
		playListDAO.removePlayList(playListNo);
	}

	/**
	 * @method : uploadPlayList
	 * @author : 김준섭
	 * @since : 2014-07-01
	 * @param : String playListName - 플레이리스트 이름, int playListNo - 플레이리스트 번호
	 * @return : void
	 * @comment : 플레이리스트를 수정한다.
	 */
	@Override
	public void uploadPlayList(String playListName, int playListNo) {
		Map map = new HashMap<>();
		map.put("playlist_name", playListName);
		map.put("playlist_no", playListNo);
		playListDAO.uploadPlayList(map);
	}

	/**
	 * @method : getMusicList
	 * @author : 김준섭
	 * @since : 2014-07-01
	 * @param : int playListId - 조회할 플레이리스트 번호
	 * @return : List - 조회한 뮤직리스트 정보
	 * @comment : 플레이리스트의 뮤직리스트를 조회한다. 
	 */
	@Override
	public List getMusicList(int playListNo) {
		return musicListDAO.getMusicList(playListNo);
	}

	/**
	 * @method : addMusicList
	 * @author : 김준섭
	 * @since : 2014-07-01
	 * @param : Map<String, Integer> map - PLAYLIST_NO : 플레이리스트 번호, MUSICBOARD_NO : 음악게시물 번호
	 * @return : String - 중복여부 중복일 시 false
	 * @comment : 플레이리스트의 뮤직리스트에 음악을 등록한다.
	 */
	@Override
	public String addMusicList(Map map) {
		try {
			musicListDAO.addMusicList(map);
		} catch (Exception e) {
			e.printStackTrace();
			if(e.getCause().toString().contains("ORA-00001")){
				return "false";
			}
		}
		return "true";
	}

	/**
	 * @method : removeMusicList
	 * @author : 김준섭
	 * @since : 2014-07-01
	 * @param : int musicListNo - 뮤직리스트 번호
	 * @return : void
	 * @comment : 플레이리스트의 뮤직리스트에 음악을 삭제한다.
	 */
	@Override
	public void removeMusicList(int musicListNo) {
		musicListDAO.removeMusicList(musicListNo);
	}
}
